package zh.keep.all.account

import android.accounts.AccountManager
import android.accounts.Account
import zh.keep.all.account.AccountUtils
import android.os.Bundle
import android.content.ContentResolver
import android.content.Context
import android.util.Log

object AccountUtils {
    /**
     * 添加账户类型
     * 在 account-authenticator xml 标签中的 android:accountType 属性中定义的
     */
    const val ACCOUNT_TYPE = "keep_progress_alive.account"

    /**
     * 添加账户
     * @param context
     */
    fun addAccount(context: Context) {
        val accountManager = context.getSystemService(Context.ACCOUNT_SERVICE) as AccountManager
        // 需要使用 android.permission.GET_ACCOUNTS 权限
        val accounts = accountManager.accounts
        Log.d("TAG", "addAccount: " + accounts.size)
        // 该类型账号不为空
        if (accounts.size > 0) {
            // 账户已存在 , 不进行处理
        } else {
            //创建账户
            val account = Account("测试同步账户", ACCOUNT_TYPE)
            // 添加一个新账户
            accountManager.addAccountExplicitly(account, "123456", Bundle())
        }
    }

    /**
     * 告知系统开始自动同步
     */
    fun autoSyncStart() {
        //创建账户
        val account = Account("测试同步账户", ACCOUNT_TYPE)
        // 设置账户同步开启
        // 注意 : 该操作需要权限 android.permission.WRITE_SYNC_SETTINGS
        ContentResolver.setIsSyncable(account, "zh.keep.all.provider", 1)
        // 设置账户自动同步
        ContentResolver.setSyncAutomatically(account, "zh.keep.all.provider", true)
        // 设置账户同步周期
        // 最后一个参数是同步周期 , 这个值只是参考值, 系统并不会严格按照该值执行
        // 一般情况下同步的间隔 10 分钟 ~ 1 小时
        ContentResolver.addPeriodicSync(account, "zh.keep.all.provider", Bundle(), 1)
    }
}